// https://www.lintcode.com/problem/flip-bits/description

class Solution {
public:
    /**
     * @param a: An integer
     * @param b: An integer
     * @return: An integer
     */
     
    // 问题转化为了A和B有多少个BIT位不相同。
    // 异或操作，相同为0，相异为1，
    // 所以问题转变成了计算A异或B之后这个数中1的个数。
    int bitSwapRequired(int a, int b) {
        int tmp = a ^ b;
        int cnt = 0;
        while (tmp)
        {
            tmp = tmp & (tmp - 1);
            cnt++;
        }
        return cnt;
    }
};